Keyshot to Sketchfab and Unreal Engine Workflow

How can I transfer the Keyshot file into a general file format such as FBX, or GLB so that I can use it in other platforms or software like Sketchfab and Unreal Engine and get the same shading effects?
I tried to save the Keyshot file as FBX, GLB or so that I could easily click and grab it into Unreal Engine or upload it to Skechfab, but I found a problem when I dealt with the model that shaded with procedural material in Keyshot, such as anisotropic or multi-layer optics, it lost the material.



but with the file that I downloaded from Sketchfab, I can easily import the model with materials using GLB file without any adjustment, and FBX with reshading.

So is it possible to transfer the Keyshot file with procedural material into a format like the above I showed? I hope I’ve made myself clear, thanks

As far as I I know, this is currently not possible as the textures and materials are proprietary to Keyshot. They cannot be transferred out. I spoken to few people at Keyshot about potentially adding ability to do this because this would opening a whole new career path for Keyshot users to be material artists for video game development. This space is currently dominated by Adobe Substance and Keyshot would be a great competitor to Substance if it had these capabilities.

The latest information that I received from the people at Keyshot is that a lot of their focus and resources are dedicated towards development of their cloud and project management features, so it would be a while before we will see these features added.

1 Like

In addition to Olivers reply


It’s important to realise Unreal and Sketchfab are real-time render engines. Which also limits the complexity of materials which can be used.

I use Substance Painter quite a lot but there is not really such thing as multi layered optical materials. Even something like glass is already way more basic than glass as it’s rendered in KeyShot.

So if you’re creating things that you want to use in Unreal/Sketchfab it’s important to realise what the limits are of a real time renderer. While Keyshot might be able to create a better bridge between Keyshot and Unreal it won’t take away the limitations of the Unreal Engine.

It’s exactly the same with V-Ray, RedShift, Corona, Octane etc. they all have specific materials that won’t be supported in Unreal but also not in a renderer which is not real time but one from the competition.

If you want to use a model inside UE you could for example stick to simple materials and fine-tune them inside UE. Being a real-time engine the performance is also different with every graphics card.

A tool which is used a lot to create models for games (which use real-time rendering) is Marmoset Toolbag: Marmoset Toolbag 4 - 3D Rendering, Texturing, & Baking Tools

The viewer Sketchfab uses is actually the one from Marmoset Toolbag and if it looks good in Marmoset Toolbag you can also use it in UE. But even watching their homepage you’ll see that simple glass looks way better in Keyshot since Keyshot is able to do way more complex calculations since it’s not real-time.

Another thing which Marmoset Toolbag can do well is baking the materials, same what Keyshot does if you export to GLB for example. So if you for example used a procedural noise it will ‘bake’ it as a normal bitmap so you get the same result in every real-time renderer which doesn’t allow procedural noise.

Same with amount of polygons of a model. If you would create models for games performance is really important so you don’t want millions of polygons for a simple object. If you just use UE to render some animation it would just take longer but if you want to have a model on Sketchfab it does matter.

A very useful page is: KeyVR Capabilities - KeyVR Manual - Confluence (atlassian.net)

KeyshotVR is also a real-time viewer and the table on that page gives a good idea in what you can expect for other real-time renderers as well.

4 Likes

Thanks for your detailed explanation, it’s the first time that I know the difference between real-time rendering and offline rendering, and I’ll spend more time on that to know more about them, thanks again.

And as you said, if it is possible that there are some specific effects exist, which Unreal Engine can’t realise, such as anisotropic brushed metal, and what you mentioned about Unreal Engine reminded me another thing about it, and I hope it will not make you feel weird, it is that as Unreal Engine use PBR material, which means that we need to do UV work and match the texture maps, so how can we do the effects like anisotropic brushed metal or other procedural materials like it? Thanks for your nice and patient answer again.

Yes, I really agree with you on the point that if KeyShot spend more time on the thing you mentioned. Every software has its advantages and disadvantages, and I think KeyShot is the most effective one to finish products rendering work, although it has some disadvantages to communicate with other platforms.

1 Like

It’s good to understand PBR and UV-maps are not related.

UV-maps are basically the only way to use textures on more complex geometry like for example the body of a car. Keyshot made such things easier by having ‘labels’ so you are able to move small image items around over more complex geometry without the need to UV-unwrap it.

Those labels are a KeyShot feature like V-Ray has ‘decals’. Such specific features will never ‘stick’ of you transfer a model to other software unless you ‘bake’ them. Baking means that if there’s no UV-map it will generate one or more and it fixes placed labels at the corresponding part of the UV. That way such export will still show the labels at the right places, like KeyShot does with a GLB export.

PBR is a way to create realistic materials and got really popular because you can easily mimic a real materials appearance using just diffuse/roughness/metallic.

To create a PBR material you look at reference images or a real object and basically you only need to ask yourself:

  • Is it a metal without finish?
  • What is the color?
  • How rough is the material?

That’s a much easier way to create correct materials by sight than a specular/glossiness workflow is so past 5-7 years more and more renderers and game engines are using PBR materials. Another benefit is that it’s fast to process since you don’t need that many values for a normal PBR material.

While PBR covers a lot of normal materials we see around us sometimes materials need more like f
e: ambient occlusion, emissive values or subsurface scattering.

Those extra properties of a material are more unique to the actual software you use and if you would use same values or texture maps for subsurface scattering the results can vary between renderers.

So for your anisotropic materials, it’s not that Unreal Engine doesn’t support it. It does support that material property but you can’t just transfer it from KeyShot to Unreal Engine. A nice example you’ll see here: Unreal Engine 5.2 - Brushed Metal / Anisotropy Material / Anisotropic Highlights Tutorial (youtube.com)

Unless you have straight forward PBR materials without ‘extras’ transferring them to other software always needs work. Sometimes it’s made easier because there are great importers/exporters created by people which also consider different materials but a lot of times you need to adjust things.

And all of this happens with all software, Houdini, Creo, Marmoset, Arnold you name it. Nvidia tries to help companies by developing a platform which supports a lot of software and it’s a kind of intermedial to streamline your models/results so you get a uniform result. That’s based on the OpenUSD models which is a very flexible and extendible kind of file format.

So Nvidia created bridges between all kinds of software so it gets a lot easier for companies who work with a lot of different software packages. It optimizes current 3D pipelines of often a lot of conversions between software packages other companies use.

Unfortunately KeyShot is not in the list of supported software (yet?) but Nvidia Omniverse is free for individuals to try. I read a lot about it but never tried myself but it looks very clever. The benefit for Nvidia is of course getting companies using their cloud computing capacity etc. but since it can save a massive amount of time for companies it’s a smart thing. More info: Omniverse Platform for OpenUSD Development and Collaboration | NVIDIA

If people see me typing wrong things, let me know. I read a lot about things and try to explain things in my own words, not too technical and how I remembered them. But please correct if I’m wrong #learningeveryday

1 Like

Thanks for your professional and detailed reply, although it’ll take me more time to understand all of what you’ve written, and I have two questions here.

  1. If I want to upload models with universal materials, can I do it with Keyshot and how can I do it with Keyshot, or what is the general way to upload a model with materials to Sketchfab?
  2. As you see, offline rendering takes more time than real-time, so why do I think Unreal Engine as a real-time renderer has more fidelity than Keyshot? Is this my misconception

Thank you for the compliment, and just ask the questions you have. In the end it makes the content for a forum and helps others as well I think.

1. Uploading models to Sketchfab

Sketchfab knows many formats but I think the materials you actually used on your model should be leading in what format is best.

The first question you can ask yourself is, did I use texture maps? If the answer is ‘yes’ OBJ and STL are basically not usable as Keyshot doesn’t support textures with those export formats.

The next question you could ask is ‘did I use labels or procedural textures’. If the answer is ‘yes’ you can’t use FBX. While FBX does support textures the output of an FBX in Keyshot won’t ‘bake’ procedural textures or labels.

That leaves you with glTF/GLB, USD or 3MF. USD is quite a nice format and while Sketchfab can handle it not many other tools can. 3MF is basically a format especially for models which are going to be 3D printed so the best pick would be glTF/GLB.

If you export to glTF/GLB the used textures will be baked on your model and as far as I know labels as well. The baking itself is still done on CPU I think and it can take quite long and is not always perfect.

If you run Window 10/11 I think it comes with the program ‘3D Viewer’ or you can install it using the Microsoft Store. That’s actually a nice piece of software to check a model since it’s also a real time viewer. At this page of the manual: Export formats (keyshot.com) you can find more about the different formats. It also mentions the 3D Viewer can’t load some glTF files which I think is indeed an issue with the viewer but it gets updated quite a lot.

I think you also should take into account that exporting from Keyshot is not without flaws and the result is only visible after you’ve exported your model. It might be way faster to have two directions for every model.

  1. You import a model from CAD and you use Keyshot to create photorealistic images for print/marketing purposes.

  2. You import your model from CAD in a real time tool and apply the right materials there as well. That could be Marmoset Toolbag/Unreal Engine/Substance Painter/etc. Not all software will be able to load Nurbs so a lot of times an FBX export from CAD would suit best (without millions of polygons).

That might sound like a lot of extra work but especially with your kind of 3D models it could be way faster in the end. Especially once you have some materials done it’s mainly a matter of drag+drop and a bit of adjustments. Big plus is that you immediately see the result as how it’s going to be. Might be worth to test it with Marmoset Toolbag trial for example.

I would really like Keyshot also having some kind of more real-time workflow next to the photorealistic approach so you won’t need other tools but it’s a bit of a different audience for real time models. It’s the same with other renderers like V-Ray. Although the Chaos Group now also owns ‘Enscape’ which is a real time renderer mainly for architecture and they worked hard to bridge Enscape with V-Ray so they can really work together. But that’s quite unique.

That being said, basically all people who do something with game models or models for online viewers use Marmoset Toolbag. It’s a bit of a weird program but not too hard to learn. Substance Painter is also nice but Marmoset Toolbag is really aimed at baking and exporting models which it does really well.

Note about the export itself

One of the things I don’t understand is why on earth Keyshot would ask users for the ‘dpi’ when people exporting a glTF/GLB model. It makes no sense to ask people about dpi in a pixel orientated environment. It’s not that people going to print 3D models on a piece of paper.

It makes sense for models that are going to be 3D printed but it’s still about the most user unfriendly way to put it into a export dialog.

A better way is to ask people on what (screen) resolution they want them to look the model great or just ask (like every other program) how big you want the texture maps to be, in pixels.

The way it currently works pushes users to do all kind of calculations and if you put the wrong number in you’re baking for days. I hope this will be addressed and also baking will use GPU since that’s like -a lot- faster.

2. Unreal Engine vs. Keyshot

While UE really does great things and gets better every time the real time engine has big limitations. Real-time engines leave out a lot of calculations which simply can’t be done while keeping the frames per second at a certain level. That involves light calculations from multiple light sources so there will be exact shadows or for example caustics and refraction.

If you play games like a first person shooter it all looks quite convincing while you run around through the environment. But if you would just stand still and take a close look at shadows (or lack of shadows), reflections etc. you will notice it’s far from perfect.

It’s just depending a lot on what you’re actually want to show. Unreal would do perfectly fine on the shower/taps etc but it will already have more difficulties with taps with a glass knob.

With time the gap between real-time renders and Keyshot will get smaller. GPUs get more and more powerful and with the RTX series now can do real time ray tracing. But it will take quite some time I think to get on par with renderers like Keyshot.

And like I said, it’s basically two different directions. A game has to be really efficient with models and textures so you have to sacrifice quality. But if you only want to display some single models in a 3D viewer a mid-range GPU won’t have issues displaying it in real time. But a complete bathroom or kitchen for that matter is another thing.

For your models it might not matter much and maybe UE gives out of the box a perfect picture so not really any misconception. It’s more that your models fit the render engine quite well and with PBR and the current features of GPUs metal is not a hard thing anymore to do real-time.

Trevor and his spotlights will have more difficulties with the glass and the fact that light sources itself also look often a bit more cartoonish. You could use the Path Tracer in UE for such scenes but that removes the ‘real-time’ from the renders.

Long story but hope it made sense!

Wow, I think you really know a lot about rendering, both the applications term and the theory term, I’m so glad that I’ve learned so much about rendering things from your nice and professional answer. And I tried as you said, exporting from Keyshot as GLB, and checking it with 3D Viewer and Unreal Engine, I can see the baked texture in Unreal Engine, but I see nothing in 3D Viewer, I don’t know why, and here is the screenshot.



Instead of using the windows 3D viewer, I would use the model viewer from the Khronos group.

2 Likes

Thank you for the nice words!

That optical glass material is actually a pretty unique material I think. I’m also not sure if V-Ray for example has such a thing right out of the box.

It’s important to know which possibilities software has if it’s about materials. The baking process takes car of ‘baking’ labels and textures/colors on your model but you can’t bake materials or their properties. The colored appearance is because of the physical properties of the glass so that will be gone in a normal PBR viewer. It simply doesn’t have the right shaders to show it.

Good to realise a material has properties that can’t be baked, they are unique for a material so they have to be actually supported by the viewer/UE. If you want to stay save you should use for example the ‘Generic’ material node and only use diffuse/roughness/metallic that way you know it can basically be handled with every PBR viewer. And for glass it’s basically the same with just an opacity texture as well. That’s also why glass looks pretty awful in many games.

About your example, you maybe can use use an Iridescent color material in UE to fake it. Like they do in this tutorial: UE5 l Creating Iridescent Color Material l 3-Minute Tutorial l Unreal Engine 5 (youtube.com)

It’s a material you can use for those car paints which change color depending on the angle of the light that hits it. Since this optical glas doesn’t let light pass easily you could use such a material to get close to it’s behaviour.

Such specific materials you can’t exchange between software without manually changing the material properties. 3D Viewer shows actually the same as Unreal Engine but it doesn’t have some environment to reflect which UE uses by default.

The Windows 3D Viewer is a nice program to check how it will look in basically all PBR based real time engines. And I just saw it gets render possibilities as well but it’s real basic PBR and you can’t do much with the materials itself.

It does on the other hand has the possibilities to 3D Paint (separate free program) as well and while it’s not exactly Substance Painter it’s pretty cool.

But complex materials like this always need some tuning and that relies on what possibilities a real-time renderer or for example the viewer on Sketchfab has.

And it’s an evolving thing, maybe what’s now impossible in Unreal Engines can be done in 2 years.

I play Assetto Corsa which is a 10 year old racing simulation. That game engine doesn’t actually allowed PBR (was not really a thing 10 years ago). So metal things like rim looked more like a high gloss plastic, glass looked boring etc.

But then a really smart Russian guy thought he could alter the DirectX shaders the game used so currently he has created the possibility to use PBR materials, way more realistic glass, photo elastic glass, iridescent car paints etc. It’s like playing a totally different game while he ‘just’ implemented smart tricks and a special DirectX dll to get it all in a pretty closed game.

Just a funny example on things can evolve. And currently his Patreon page says: €42,870/month, so it’s quite rewarding I would say. But really, amazing smart guy and he pulled things to a totally different level.

1 Like

I think you know much more about rendering than me, I wonder if I can get your E-mail address or other accounts on the Unreal Engine platform, as I’m planning to learn Unreal Engine because of my job transfer. If you don’t mind, I want to keep in touch with you to learn more about the rendering things, thanks again.

Wow, amazing tool, I like it, thanks a lot.

No problem, I’ll sent you a private message. Not that I care about people having my email address but since there’s also some spam around the forum, got plenty of that :slight_smile:

I don’t have that much knowledge about Unreal Engine but I did some tests with it and I like the tools it offer to animate. Like virtual counterparts of real world camera equipment. Think that’s also why UE is used quite a lot for story boards for movies etc these days.

1 Like

That’s also a really nice one. I always tend to use offline ones since my upload is not the best using a mobile phone for my internet life line :wink:

Thanks, I’ve got it, and I’ve left you a private message already

1 Like